#include "myFunctions.h"
#include "RBF.h"
int main(int argc,char *argv[]){

	vector<vector<double> > X;
	vector<int> Y;
	vector<double> errores;
	clock_t start;
	
	int numParticiones;
	double desvioDatos;
	int numPatterns;
	double porcTT;

	loadConfig(numPatterns,numParticiones,porcTT,desvioDatos);

	cout<<"Carga config"<<endl;
	cout<<"numParticiones: "<<numParticiones<<" - numPatterns: "<<numPatterns<<" - porcTT: "<<porcTT<<" - desvioDatos: "<<desvioDatos<<endl;
	genRandom("xor.txt", "xorRandomTest.txt", desvioDatos, numPatterns);
	cout<<"genero random"<<endl;
	readFile(X,Y,"xorRandomTest.txt",false);
	cout<<"lee del archivo de datos"<<endl;

	particionado(X,Y,porcTT/100,numParticiones);
	cout<<"termina particionado"<<endl;

	start = clock();
	for(int i=0; i<numParticiones; i++){
		RBF rbf("config_xor.txt");
		vector<vector<double> > X_training, X_test;
		vector<vector<int> > Y_training,Y_test;
		stringstream cvz;
		cvz<<i;
		string snumero = cvz.str();
		string nomArchi = "Training/partTraining"+snumero+".txt";
		readFile(X_training,Y_training,nomArchi,false);
		rbf.training(X_training,Y_training);
		
		nomArchi="Test/partTest"+snumero+".txt";
		readFile(X_test,Y_test,nomArchi,false);
		double e = rbf.test(X_test,Y_test);
		errores.push_back(e);
	}
	cout<<"Clock "<<clock()<<" Start "<<start<<endl;
	cout<<"Tiempo de entrenamiento: "<<(clock()-start)/(double)CLOCKS_PER_SEC<<endl;
	cout<<endl<<"-------------------------------------------------------"<<endl;
	cout<<"Resultados para XOR: "<<endl<<"Promedio de Errores: "<<media(errores)<<" %"<<endl;
	return 1;
}
